package com.ck.server.bloomFilter;

/**
 * @author ck
 * @date 2023/12/22 17:20
 */


import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;

/**
 * 利用 Google 开源的 Guava 中自带的布隆过滤器
 * 创建了一个最多存放 1500 个整数的布隆过滤器，并且我们可以容忍误判的概率为百分之（0.01）
 * 缺点：只能单机使用，容量扩张也不容易
 *
 * 分布式场景下可以使用redis中的布隆过滤器
 */
public class GuavaBloomFilter {
    public static void main(String[] args) {
        // 创建布隆过滤器对象
        BloomFilter<Integer> filter = BloomFilter.create(
                Funnels.integerFunnel(),
                1500,
                0.01);
        // 判断指定元素是否存在
        System.out.println(filter.mightContain(1));
        System.out.println(filter.mightContain(2));
        // 将元素添加进布隆过滤器
        filter.put(1);
        filter.put(2);
        System.out.println(filter.mightContain(1));
        System.out.println(filter.mightContain(2));


        //false
        //false
        //true
        //true
    }
}
